package admin

import (
	"github.com/gin-gonic/gin"
	handler "mygin/controllers/handlers"
	middleware "mygin/controllers/middlewares"
)

func AdminApiRouter(router *gin.Engine) {
	/*
		添加路由群组group1, 就是router 对象的一个副本,然后可以映射到localhost:8080/group1/  下所有的请求
		可以添加多个,也可以不添加.
	*/
	adminRouter := router.Group("admin")

	/*路由也有GET,POST,DELETE,PUT,PATCH 等所有请求类型选择, 第一个参数是匹配的url字符串,第二个参数是处理器,用于对
	请求信息的处理,而且是可变参数,可以写多个控制器,按照官方说法,如果你放入多个控制器参数,name最后一个应该才是真正的
	控制器.其余的都是中间件, 他们应该被设计成可以在多个路由间共享的函数.
	curl -v -x POST http://localhost:8081/group1/jsonTest -H 'content-type: application/json' -d '{ "nickname": "我是阿金" }'
	这种方式来模拟请求
	*/

	// adminRouter 路由组
	{
		// POST请求, 返回JSON格式数据, 包含状态码. 设置闭包的匿名处理器func(c *gin.Context),并且直接实现了代码.
		adminRouter.POST("/jsonTest", handler.AdminJsonHandler)

		// POST请求, handlerA()是中间件, 可以写多个中间件, 一般用于账号验证之类的操作,类似拦截器
		// handlerB是真正的处理器, 闭包, 调用时不需要括号
		adminRouter.POST("/ping", middleware.AdminMiddleWare(), handler.AdminHandler)

		// 能够匹配/user/john这种格式，但不能匹配/user/ 或 /user格式
		adminRouter.GET("/user/:name", handler.AdminGetHandler)

	}

}
